from openpyxl import Workbook
# * 表示所有
from openpyxl.styles import * 

# 列的key列表
columnArr = ["",'A','B','C','D','E','F','G','H','I','J']

# 颜色列表
colorArr = ["ef5b9c","f15b6c","ef4136","dea32c","b2d235","7fb80e","1d953f","005831","8552a1"]

wb = Workbook()
ws = wb.active

for row in range(1, 10):
  ws.row_dimensions[row].height = 25    # 设置行高

  for column in range(1, row+1):
    # 需要对应的key（字符型） 不仅仅是数值
    ws.column_dimensions[columnArr[column]].width = 20

    value = "%d * %d = %d" % (row, column, row * column)
    cell = ws.cell(row=row, column=column, value=value)

    """ 
    指定单元格的颜色
      PatternFill(patternType=patternType,fgColor=Color(), bgColor=Color())

      patternType = {'darkDown', 'darkUp', 'lightDown', 'darkGrid', 'lightVertical', 
               'solid', 'gray0625', 'darkHorizontal', 'lightGrid', 'lightTrellis', 
               'mediumGray', 'gray125', 'darkGray', 'lightGray', 'lightUp', 
               'lightHorizontal', 'darkTrellis', 'darkVertical'} 
      
      patternType是指单元格填充底纹纹路样式，
      fgColor前景色就是指花纹纹路的颜色是所设定值，
      bgColor背景色是指花纹纹路为默认黑色，单元格背景颜色为所设定值，这样也就理解了，
      在fgColor+bgColor双参数下，指对花纹（前景）设一个颜色，对单元格背景设另一个颜色。
      
      可以看到特殊的是'solid'样式，也就是纯色填充样式，
      fgColor+bgColor时，由于fgColor是完全纯色，也就是一整块纹路，把bgColor给完全覆盖了，
      所以效果跟只有fgColor一样，即只看到前景（花纹）红色，看不到背景（单元格）绿色。
    """

    # patternType = {'darkDown', 'darkUp', 'lightDown', 'darkGrid', 'lightVertical', 'solid', 'gray0625', 'darkHorizontal', 'lightGrid', 'lightTrellis', 'mediumGray', 'gray125', 'darkGray', 'lightGray', 'lightUp', 'lightHorizontal', 'darkTrellis', 'darkVertical'} 
    # fill = PatternFill("solid", bgColor="ff0000")       # 纯色状态下，背景色看不出效果
    # fill = PatternFill("solid", fgColor="ff0000")         # 前景色有效果
    fill = PatternFill("solid", fgColor=colorArr[row-1])
    cell.fill = fill

    # 指定边框样式
    border_type = Side(border_style="double", color="FFFFFF")
    border = Border(top = border_type, bottom = border_type, left = border_type, right = border_type)
    cell.border = border

wb.save("九九乘法表.xlsx")